Fix a problem with UIM and the compose key
authorRob Browning <rlb@defaultvalue.org>
Fri, 15 Aug 2014 22:17:23 +0000 (17:17 -0500)
committerRob Browning <rlb@defaultvalue.org>
Fri, 15 Aug 2014 22:17:52 +0000 (17:17 -0500)
Incorporate the relevant upstream patches:

  0015-The-compose-key-should-now-work-better-with-UIM-1-4.patch
  0016-The-compose-key-should-now-work-better-with-UIM-2-4.patch
  0017-The-compose-key-should-now-work-better-with-UIM-3-4.patch
  0018-The-compose-key-should-now-work-better-with-UIM-4-4.patch

Thanks to Anders Kaseorg <andersk@MIT.EDU> for the report, and for
tracking down the relevant patches.

Closes: 753534
1  2 
debian/.git-dpm
debian/patches/0015-The-compose-key-should-now-work-better-with-UIM-1-4.patch
debian/patches/0016-The-compose-key-should-now-work-better-with-UIM-2-4.patch
debian/patches/0017-The-compose-key-should-now-work-better-with-UIM-3-4.patch
debian/patches/0018-The-compose-key-should-now-work-better-with-UIM-4-4.patch
debian/patches/series

diff --cc debian/.git-dpm
index 84a0d9e0c2ebcd9e6edfd0d8f467f7a9484cff9d,0000000000000000000000000000000000000000..774ccf0896b21a8e86bd3fca865dcaec66bf0378
mode 100644,000000..100644
--- /dev/null
@@@ -1,8 -1,0 +1,8 @@@
- 6e82b5fbe2761d479f1fec96fb3d4afee12b9d67
- 6e82b5fbe2761d479f1fec96fb3d4afee12b9d67
 +# see git-dpm(1) from git-dpm package
++85d33a4f8d5153229502b8d690eaf60146b69468
++85d33a4f8d5153229502b8d690eaf60146b69468
 +24c1fe67725d87a843919696fdc1ff49c99e7fd4
 +24c1fe67725d87a843919696fdc1ff49c99e7fd4
 +emacs24_24.3+1.orig.tar.bz2
 +421a2aef37aedf8ca24bb57cd100d173022e79a4
 +25725234
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0ed738370b86d8863f6a5194266dd75fa2ef41c7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,51 @@@
++From 3978222106a74b33f3efb8d07435f7165968625c Mon Sep 17 00:00:00 2001
++From: Daniel Colascione <dancol@dancol.org>
++Date: Sun, 23 Mar 2014 03:24:51 -0700
++Subject: The compose key should now work better with UIM (1/4).
++
++This upstream patch has been added:
++
++  Work around flaky XIM modules
++
++Origin: upstream, commit: r116856.1.1, 3ee4c51c34a049dc4bd36fb04c33cdf9a85e5ffa
++Added-by: Rob Browning <rlb@defaultvalue.org>
++Bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=753534
++---
++ src/ChangeLog |  5 +++++
++ src/xfns.c    | 10 ++++++++++
++ 2 files changed, 15 insertions(+)
++
++diff --git a/src/ChangeLog b/src/ChangeLog
++index 01acb02..271d81d 100644
++--- a/src/ChangeLog
+++++ b/src/ChangeLog
++@@ -1,3 +1,8 @@
+++2014-03-23  Daniel Colascione  <dancol@dancol.org>
+++
+++     * xfns.c (create_frame_xic): If XCreateIC fails, try again without
+++     XNStatusAttributes; works around flaky XIM modules, apparently.
+++
++ 2013-08-21  Paul Eggert  <eggert@cs.ucla.edu>
++ 
++      * process.c (allocate_pty) [PTY_OPEN]: Set fd's FD_CLOEXEC flag.
++diff --git a/src/xfns.c b/src/xfns.c
++index 656b71f..f1d4a48 100644
++--- a/src/xfns.c
+++++ b/src/xfns.c
++@@ -2221,6 +2221,16 @@ create_frame_xic (struct frame *f)
++                     XNStatusAttributes, status_attr,
++                     XNPreeditAttributes, preedit_attr,
++                     NULL);
+++
+++      /* Some input methods don't support a status pixel.  */
+++      if (xic == NULL)
+++        xic = XCreateIC (xim,
+++                         XNInputStyle, xic_style,
+++                         XNClientWindow, FRAME_X_WINDOW (f),
+++                         XNFocusWindow, FRAME_X_WINDOW (f),
+++                         XNPreeditAttributes, preedit_attr,
+++                         NULL);
+++
++       XFree (preedit_attr);
++       XFree (status_attr);
++     }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e8929eaa8979c3f7fd15aa8c25d7f5d6bd1f0456
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,168 @@@
++From 6befc5cb46ff5204d2c4176b5cf7f678f87c0202 Mon Sep 17 00:00:00 2001
++From: Daniel Colascione <dancol@dancol.org>
++Date: Sun, 23 Mar 2014 03:56:30 -0700
++Subject: The compose key should now work better with UIM (2/4).
++
++This upstream patch has been added:
++
++  Improve XIC fix
++
++Origin: upstream, commit: r116856.1.2, 0cd1fce9d7bf93d034539146b05161d6dfc8fee7
++Added-by: Rob Browning <rlb@defaultvalue.org>
++Bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=753534
++---
++ src/ChangeLog |   5 +--
++ src/xfns.c    | 102 +++++++++++++++++++++++++++++++++++-----------------------
++ 2 files changed, 65 insertions(+), 42 deletions(-)
++
++diff --git a/src/ChangeLog b/src/ChangeLog
++index 271d81d..09d645a 100644
++--- a/src/ChangeLog
+++++ b/src/ChangeLog
++@@ -1,7 +1,8 @@
++ 2014-03-23  Daniel Colascione  <dancol@dancol.org>
++ 
++-     * xfns.c (create_frame_xic): If XCreateIC fails, try again without
++-     XNStatusAttributes; works around flaky XIM modules, apparently.
+++     * xfns.c (create_frame_xic): Pass XNStatusAttributes to XCreateIC
+++     only if xic_style calls for it.  This change allows Emacs to work
+++     with ibus.  Also, don't leak resources if create_frame_xic fails.
++ 
++ 2013-08-21  Paul Eggert  <eggert@cs.ucla.edu>
++ 
++diff --git a/src/xfns.c b/src/xfns.c
++index f1d4a48..2fe98c3 100644
++--- a/src/xfns.c
+++++ b/src/xfns.c
++@@ -2164,27 +2164,27 @@ create_frame_xic (struct frame *f)
++   XIM xim;
++   XIC xic = NULL;
++   XFontSet xfs = NULL;
+++  XVaNestedList status_attr = NULL;
+++  XVaNestedList preedit_attr = NULL;
+++  XRectangle s_area;
+++  XPoint spot;
+++  XIMStyles supported_list;
++ 
++   if (FRAME_XIC (f))
++     return;
++ 
++   /* Create X fontset. */
++   xfs = xic_create_xfontset (f);
+++  FRAME_XIC_FONTSET (f) = xfs;
+++
++   xim = FRAME_X_XIM (f);
++   if (xim)
++     {
++-      XRectangle s_area;
++-      XPoint spot;
++-      XVaNestedList preedit_attr;
++-      XVaNestedList status_attr;
++-
++-      s_area.x = 0; s_area.y = 0; s_area.width = 1; s_area.height = 1;
++       spot.x = 0; spot.y = 1;
++ 
++       /* Determine XIC style.  */
++       if (xic_style == 0)
++      {
++-       XIMStyles supported_list;
++        supported_list.count_styles = (sizeof supported_xim_styles
++                                       / sizeof supported_xim_styles[0]);
++        supported_list.supported_styles = supported_xim_styles;
++@@ -2203,41 +2203,63 @@ create_frame_xic (struct frame *f)
++                                         : NULL),
++                                        &spot,
++                                        NULL);
++-      status_attr = XVaCreateNestedList (0,
++-                                      XNArea,
++-                                      &s_area,
++-                                      XNFontSet,
++-                                      xfs,
++-                                      XNForeground,
++-                                      FRAME_FOREGROUND_PIXEL (f),
++-                                      XNBackground,
++-                                      FRAME_BACKGROUND_PIXEL (f),
++-                                      NULL);
++-
++-      xic = XCreateIC (xim,
++-                    XNInputStyle, xic_style,
++-                    XNClientWindow, FRAME_X_WINDOW (f),
++-                    XNFocusWindow, FRAME_X_WINDOW (f),
++-                    XNStatusAttributes, status_attr,
++-                    XNPreeditAttributes, preedit_attr,
++-                    NULL);
++-
++-      /* Some input methods don't support a status pixel.  */
++-      if (xic == NULL)
++-        xic = XCreateIC (xim,
++-                         XNInputStyle, xic_style,
++-                         XNClientWindow, FRAME_X_WINDOW (f),
++-                         XNFocusWindow, FRAME_X_WINDOW (f),
++-                         XNPreeditAttributes, preedit_attr,
++-                         NULL);
++-
++-      XFree (preedit_attr);
++-      XFree (status_attr);
+++
+++      if (!preedit_attr)
+++        goto out;
+++
+++      if (xic_style & XIMStatusArea)
+++        {
+++          s_area.x = 0; s_area.y = 0; s_area.width = 1; s_area.height = 1;
+++          status_attr = XVaCreateNestedList (0,
+++                                             XNArea,
+++                                             &s_area,
+++                                             XNFontSet,
+++                                             xfs,
+++                                             XNForeground,
+++                                             FRAME_FOREGROUND_PIXEL (f),
+++                                             XNBackground,
+++                                             FRAME_BACKGROUND_PIXEL (f),
+++                                             NULL);
+++
+++          if (!status_attr)
+++            goto out;
+++
+++          xic = XCreateIC (xim,
+++                           XNInputStyle, xic_style,
+++                           XNClientWindow, FRAME_X_WINDOW (f),
+++                           XNFocusWindow, FRAME_X_WINDOW (f),
+++                           XNStatusAttributes, status_attr,
+++                           XNPreeditAttributes, preedit_attr,
+++                           NULL);
+++        }
+++      else
+++        {
+++          xic = XCreateIC (xim,
+++                           XNInputStyle, xic_style,
+++                           XNClientWindow, FRAME_X_WINDOW (f),
+++                           XNFocusWindow, FRAME_X_WINDOW (f),
+++                           XNPreeditAttributes, preedit_attr,
+++                           NULL);
+++        }
+++
+++      if (!xic)
+++        goto out;
+++
+++      FRAME_XIC (f) = xic;
+++      FRAME_XIC_STYLE (f) = xic_style;
+++      xfs = NULL; /* Don't free below.  */
++     }
++ 
++-  FRAME_XIC (f) = xic;
++-  FRAME_XIC_STYLE (f) = xic_style;
++-  FRAME_XIC_FONTSET (f) = xfs;
+++ out:
+++
+++  if (xfs)
+++    free_frame_xic (f);
+++
+++  if (preedit_attr)
+++    XFree (preedit_attr);
+++
+++  if (status_attr)
+++    XFree (status_attr);
++ }
++ 
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e955a47e7a36bd405e0a750aba50ec41a2693e5c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,198 @@@
++From c6fc54dd90600b165637584838f2f8be572aa878 Mon Sep 17 00:00:00 2001
++From: Daniel Colascione <dancol@dancol.org>
++Date: Sun, 23 Mar 2014 04:35:21 -0700
++Subject: The compose key should now work better with UIM (3/4).
++
++This upstream patch has been added:
++
++  Further improve create_frame_xic patch
++
++Origin: upstream, commit: r116856.1.3, 5bf310bb4f29b77c91d6805b276d4c66968c599a
++Added-by: Rob Browning <rlb@defaultvalue.org>
++Bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=753534
++---
++ src/ChangeLog |   3 +-
++ src/xfns.c    | 131 ++++++++++++++++++++++++++++++++--------------------------
++ 2 files changed, 75 insertions(+), 59 deletions(-)
++
++diff --git a/src/ChangeLog b/src/ChangeLog
++index 09d645a..e41b5ed 100644
++--- a/src/ChangeLog
+++++ b/src/ChangeLog
++@@ -2,7 +2,8 @@
++ 
++      * xfns.c (create_frame_xic): Pass XNStatusAttributes to XCreateIC
++      only if xic_style calls for it.  This change allows Emacs to work
++-     with ibus.  Also, don't leak resources if create_frame_xic fails.
+++     with ibus.  Also, don't leak resources if create_frame_xic fails,
+++     and stop caching xic_style across different displays.
++ 
++ 2013-08-21  Paul Eggert  <eggert@cs.ucla.edu>
++ 
++diff --git a/src/xfns.c b/src/xfns.c
++index 2fe98c3..76036b8 100644
++--- a/src/xfns.c
+++++ b/src/xfns.c
++@@ -2156,8 +2156,6 @@ best_xim_style (XIMStyles *user, XIMStyles *xim)
++ 
++ /* Create XIC for frame F. */
++ 
++-static XIMStyle xic_style;
++-
++ void
++ create_frame_xic (struct frame *f)
++ {
++@@ -2169,29 +2167,34 @@ create_frame_xic (struct frame *f)
++   XRectangle s_area;
++   XPoint spot;
++   XIMStyles supported_list;
+++  XIMStyle xic_style;
++ 
++   if (FRAME_XIC (f))
++-    return;
++-
++-  /* Create X fontset. */
++-  xfs = xic_create_xfontset (f);
++-  FRAME_XIC_FONTSET (f) = xfs;
+++    goto out;
++ 
++   xim = FRAME_X_XIM (f);
++-  if (xim)
+++  if (!xim)
+++    goto out;
+++
+++  /* Determine XIC style.  */
+++  supported_list.count_styles = (sizeof supported_xim_styles
+++                                 / sizeof supported_xim_styles[0]);
+++  supported_list.supported_styles = supported_xim_styles;
+++  xic_style = best_xim_style (&supported_list, FRAME_X_XIM_STYLES (f));
+++
+++  /* Create X fontset. */
+++  if (xic_style & (XIMPreeditPosition | XIMStatusArea))
++     {
++-      spot.x = 0; spot.y = 1;
+++      xfs = xic_create_xfontset (f);
+++      if (!xfs)
+++        goto out;
++ 
++-      /* Determine XIC style.  */
++-      if (xic_style == 0)
++-     {
++-       supported_list.count_styles = (sizeof supported_xim_styles
++-                                      / sizeof supported_xim_styles[0]);
++-       supported_list.supported_styles = supported_xim_styles;
++-       xic_style = best_xim_style (&supported_list,
++-                                   FRAME_X_XIM_STYLES (f));
++-     }
+++      FRAME_XIC_FONTSET (f) = xfs;
+++    }
++ 
+++  if (xic_style & XIMPreeditPosition)
+++    {
+++      spot.x = 0; spot.y = 1;
++       preedit_attr = XVaCreateNestedList (0,
++                                        XNFontSet, xfs,
++                                        XNForeground,
++@@ -2206,50 +2209,62 @@ create_frame_xic (struct frame *f)
++ 
++       if (!preedit_attr)
++         goto out;
+++    }
++ 
++-      if (xic_style & XIMStatusArea)
++-        {
++-          s_area.x = 0; s_area.y = 0; s_area.width = 1; s_area.height = 1;
++-          status_attr = XVaCreateNestedList (0,
++-                                             XNArea,
++-                                             &s_area,
++-                                             XNFontSet,
++-                                             xfs,
++-                                             XNForeground,
++-                                             FRAME_FOREGROUND_PIXEL (f),
++-                                             XNBackground,
++-                                             FRAME_BACKGROUND_PIXEL (f),
++-                                             NULL);
++-
++-          if (!status_attr)
++-            goto out;
++-
++-          xic = XCreateIC (xim,
++-                           XNInputStyle, xic_style,
++-                           XNClientWindow, FRAME_X_WINDOW (f),
++-                           XNFocusWindow, FRAME_X_WINDOW (f),
++-                           XNStatusAttributes, status_attr,
++-                           XNPreeditAttributes, preedit_attr,
++-                           NULL);
++-        }
++-      else
++-        {
++-          xic = XCreateIC (xim,
++-                           XNInputStyle, xic_style,
++-                           XNClientWindow, FRAME_X_WINDOW (f),
++-                           XNFocusWindow, FRAME_X_WINDOW (f),
++-                           XNPreeditAttributes, preedit_attr,
++-                           NULL);
++-        }
++-
++-      if (!xic)
+++  if (xic_style & XIMStatusArea)
+++    {
+++      s_area.x = 0; s_area.y = 0; s_area.width = 1; s_area.height = 1;
+++      status_attr = XVaCreateNestedList (0,
+++                                         XNArea,
+++                                         &s_area,
+++                                         XNFontSet,
+++                                         xfs,
+++                                         XNForeground,
+++                                         FRAME_FOREGROUND_PIXEL (f),
+++                                         XNBackground,
+++                                         FRAME_BACKGROUND_PIXEL (f),
+++                                         NULL);
+++
+++      if (!status_attr)
++         goto out;
++-
++-      FRAME_XIC (f) = xic;
++-      FRAME_XIC_STYLE (f) = xic_style;
++-      xfs = NULL; /* Don't free below.  */
++     }
++ 
+++  if (preedit_attr && status_attr)
+++    xic = XCreateIC (xim,
+++                     XNInputStyle, xic_style,
+++                     XNClientWindow, FRAME_X_WINDOW (f),
+++                     XNFocusWindow, FRAME_X_WINDOW (f),
+++                     XNStatusAttributes, status_attr,
+++                     XNPreeditAttributes, preedit_attr,
+++                     NULL);
+++  else if (preedit_attr)
+++    xic = XCreateIC (xim,
+++                     XNInputStyle, xic_style,
+++                     XNClientWindow, FRAME_X_WINDOW (f),
+++                     XNFocusWindow, FRAME_X_WINDOW (f),
+++                     XNPreeditAttributes, preedit_attr,
+++                     NULL);
+++  else if (status_attr)
+++    xic = XCreateIC (xim,
+++                     XNInputStyle, xic_style,
+++                     XNClientWindow, FRAME_X_WINDOW (f),
+++                     XNFocusWindow, FRAME_X_WINDOW (f),
+++                     XNStatusAttributes, status_attr,
+++                     NULL);
+++  else
+++    xic = XCreateIC (xim,
+++                     XNInputStyle, xic_style,
+++                     XNClientWindow, FRAME_X_WINDOW (f),
+++                     XNFocusWindow, FRAME_X_WINDOW (f),
+++                     NULL);
+++
+++  if (!xic)
+++    goto out;
+++
+++  FRAME_XIC (f) = xic;
+++  FRAME_XIC_STYLE (f) = xic_style;
+++  xfs = NULL; /* Don't free below.  */
+++
++  out:
++ 
++   if (xfs)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..603b298ddca1a8b3dbccfdbc0095d1fbed19d058
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,92 @@@
++From 85d33a4f8d5153229502b8d690eaf60146b69468 Mon Sep 17 00:00:00 2001
++From: Daniel Colascione <dancol@dancol.org>
++Date: Sun, 23 Mar 2014 04:44:21 -0700
++Subject: The compose key should now work better with UIM (4/4).
++
++This upstream patch has been added:
++
++  Further improve XIM init
++
++Origin: upstream, commit: r116856.1.4, 5307801ef2d4f1c2b6970b4f5a2d72bdd0285e15
++Added-by: Rob Browning <rlb@defaultvalue.org>
++Bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=753534
++---
++ src/ChangeLog |  4 ++++
++ src/xfns.c    | 20 +++++++++-----------
++ 2 files changed, 13 insertions(+), 11 deletions(-)
++
++diff --git a/src/ChangeLog b/src/ChangeLog
++index e41b5ed..7170661 100644
++--- a/src/ChangeLog
+++++ b/src/ChangeLog
++@@ -4,6 +4,10 @@
++      only if xic_style calls for it.  This change allows Emacs to work
++      with ibus.  Also, don't leak resources if create_frame_xic fails,
++      and stop caching xic_style across different displays.
+++     (supported_xim_styles): Make const.
+++     (best_xim_style): Remove first parameter: it's always just
+++     supported_xim_styles.  Change to look at supported_xim_styles
+++     directly.
++ 
++ 2013-08-21  Paul Eggert  <eggert@cs.ucla.edu>
++ 
++diff --git a/src/xfns.c b/src/xfns.c
++index 76036b8..0d649c6 100644
++--- a/src/xfns.c
+++++ b/src/xfns.c
++@@ -1838,12 +1838,12 @@ hack_wm_protocols (FRAME_PTR f, Widget widget)
++ #ifdef HAVE_X_I18N
++ 
++ static XFontSet xic_create_xfontset (struct frame *);
++-static XIMStyle best_xim_style (XIMStyles *, XIMStyles *);
+++static XIMStyle best_xim_style (XIMStyles *);
++ 
++ 
++ /* Supported XIM styles, ordered by preference.  */
++ 
++-static XIMStyle supported_xim_styles[] =
+++static const XIMStyle supported_xim_styles[] =
++ {
++   XIMPreeditPosition | XIMStatusArea,
++   XIMPreeditPosition | XIMStatusNothing,
++@@ -2141,14 +2141,16 @@ xic_free_xfontset (struct frame *f)
++    input method XIM.  */
++ 
++ static XIMStyle
++-best_xim_style (XIMStyles *user, XIMStyles *xim)
+++best_xim_style (XIMStyles *xim)
++ {
++   int i, j;
+++  int nr_supported =
+++    sizeof (supported_xim_styles) / sizeof (supported_xim_styles[0]);
++ 
++-  for (i = 0; i < user->count_styles; ++i)
+++  for (i = 0; i < nr_supported; ++i)
++     for (j = 0; j < xim->count_styles; ++j)
++-      if (user->supported_styles[i] == xim->supported_styles[j])
++-     return user->supported_styles[i];
+++      if (supported_xim_styles[i] == xim->supported_styles[j])
+++     return supported_xim_styles[i];
++ 
++   /* Return the default style.  */
++   return XIMPreeditNothing | XIMStatusNothing;
++@@ -2166,7 +2168,6 @@ create_frame_xic (struct frame *f)
++   XVaNestedList preedit_attr = NULL;
++   XRectangle s_area;
++   XPoint spot;
++-  XIMStyles supported_list;
++   XIMStyle xic_style;
++ 
++   if (FRAME_XIC (f))
++@@ -2177,10 +2178,7 @@ create_frame_xic (struct frame *f)
++     goto out;
++ 
++   /* Determine XIC style.  */
++-  supported_list.count_styles = (sizeof supported_xim_styles
++-                                 / sizeof supported_xim_styles[0]);
++-  supported_list.supported_styles = supported_xim_styles;
++-  xic_style = best_xim_style (&supported_list, FRAME_X_XIM_STYLES (f));
+++  xic_style = best_xim_style (FRAME_X_XIM_STYLES (f));
++ 
++   /* Create X fontset. */
++   if (xic_style & (XIMPreeditPosition | XIMStatusArea))
index ff65f677eb8caccb13179efa8d6cb0cd5f73565f,0000000000000000000000000000000000000000..ebfd89e26c8e0e37c1e8b9d702dc016cf31d9444
mode 100644,000000..100644
--- /dev/null
@@@ -1,14 -1,0 +1,18 @@@
 +0001-Prefer-usr-share-info-emacs-24-over-usr-share-info.patch
 +0002-Run-debian-startup-and-set-debian-emacs-flavor.patch
 +0003-Remove-files-that-appear-to-be-incompatible-with-the.patch
 +0004-Adjust-documentation-references-for-Debian.patch
 +0005-Modify-the-output-of-version-to-indicate-Debian-modi.patch
 +0006-Look-for-NEWS-in-order-to-find-etc-rather-than-GNU.patch
 +0007-Invoke-the-correct-xmlstarlet-executable-on-Debian-s.patch
 +0008-Emacs-should-no-longer-hang-at-startup-on-kFreeBSD.patch
 +0009-Emacs-should-no-longer-hang-at-startup-on-kFreeBSD.patch
 +0010-Emacs-should-now-build-correctly-on-GNU-Hurd.patch
 +0011-Gnus-should-no-longer-use-a-predictable-temp-file-na.patch
 +0012-Security-issues-in-find-gc.el-have-been-fixed-CVE-20.patch
 +0013-Security-issues-in-tramp-have-been-fixed-CVE-2014-34.patch
 +0014-Insecure-file-handling-in-browse-url-mosaic-has-been.patch
++0015-The-compose-key-should-now-work-better-with-UIM-1-4.patch
++0016-The-compose-key-should-now-work-better-with-UIM-2-4.patch
++0017-The-compose-key-should-now-work-better-with-UIM-3-4.patch
++0018-The-compose-key-should-now-work-better-with-UIM-4-4.patch